package com.telchina.workorder.domain;

import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.telchina.common.annotation.Excel;
import com.telchina.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;
import java.util.List;

/**
 * 工单信息（受理单）对象 wo_work_order
 *
 * @author konghao
 * @date 2023-02-21
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class WoWorkOrder extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * ID
     */
    @TableId(
            type = IdType.ASSIGN_UUID
    )
    private String id;

    /**
     * 工单编号
     */
    @Excel(name = "工单编号")
    @ApiModelProperty(value = "工单编号")
    private String workOrderNumber;

    /**
     * 来电号码
     */
    @Excel(name = "来电号码")
    @ApiModelProperty(value = "来电号码")
    private String callerNumber;

    /**
     * 受理工号
     */
    @Excel(name = "受理工号")
    @ApiModelProperty(value = "受理工号")
    private String acceptNumber;

    /**
     * 受理时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "受理时间")
    @Excel(name = "受理时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date acceptTime;

    /**
     * 工单类型
     */
    @Excel(name = "工单类型")
    @ApiModelProperty(value = "工单类型")
    private String workOrderType;

    /**
     * 信息来源 字典
     */
    @Excel(name = "信息来源 字典")
    @ApiModelProperty(value = "信息来源")
    private String infoSerrces;

    /**
     * 所在区域
     */
    @Excel(name = "所在区域")
    @ApiModelProperty(value = "所在区域")
        private String region;

    /**
     * 行业类型
     */
    @Excel(name = "行业类型")
    @ApiModelProperty(value = "行业类型")
    private String industryType;

    /**
     * 责任单位
     */
    @Excel(name = "责任单位")
    @ApiModelProperty(value = "责任单位")
    private String responsibleUnit;

    /**
     * 处理期限
     */
    @Excel(name = "处理期限")
    @ApiModelProperty(value = "处理期限")
    private Long processingPeriod;

    /**
     * 联系人
     */
    @Excel(name = "联系人")
    private String contacts;

    /**
     * 联系方式
     */
    @Excel(name = "联系方式")
    private String contactsInfo;

    /**
     * 所在片区
     */
    @Excel(name = "所在片区")
    private String area;

    /**
     * 是否回访
     */
    @Excel(name = "是否回访")
    private String returnVisit;

    /**
     * 紧急程度
     */
    @Excel(name = "紧急程度")
    private String urgency;

    /**
     * 发生地址
     */
    @Excel(name = "发生地址")
    private String occAddress;

    /**
     * 问题描述
     */
    @Excel(name = "问题描述")
    private String problemDesc;

    /**
     * 备注
     */
    @Excel(name = "备注")
    private String remarks;

    /**
     * 工单状态  0 草稿（新单据）；1 派单；2工单回复；3工单改派；4：申请延期；5 结案
     */
    private String workOrderStatus;

    /**
     * 外部单号
     */
    private String extOrderNumber;

    /**
     * 并单状态
     */
    private String consStatus;

    /**
     * 主单关联
     */
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String masterOrderId;

    /**
     * 流程实例ID
     */
    private String instanceId;

    /**
     * 纬度
     */
    private String latitude;

    /**
     * 经度
     */
    private String longitude;

    /**
     * 母子单状态(0:非母子 ; 1:子单；2:母单)
     */
    private String parentChild;

    /**
     * 母单id
     */
    private String parentOrderId;

    /**
     * 反馈方式
     */
    @TableField(updateStrategy = FieldStrategy.NOT_NULL)
    private String feedbackMode;

    /**
     * 反馈时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "反馈时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @TableField(updateStrategy = FieldStrategy.NOT_NULL)
    private Date feedbackTime;

    /**
     * 对过程是否满意
     */
    private String processOpinion;

    /**
     * 对结果是否满意
     */
    private String resultOpinion;

    /**
     * 通话sessionid  与通话记录、通话录音关联的唯一标识
     */
    private Long callSessionId;

    /**
     * 派单时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "派单时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date dispatchTime;

    /**
     * 到期时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "到期时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date expirationTime;

    /**
     * 工单完成时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "工单完成时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date completionTime;

    /**
     * 是否推诿工单
     */
    private String entrustOrder;

    /**
     * 登记人
     */
    private String registrant;

    /**
     * 登记人所在的部门
     */
    private String registrantDeptId;


    /**
     * 是否考核 1：不考核；0：考核
     */
    private String disergardKpi;

    /**
     * 附单数据
     */
    @TableField(exist = false)
    private List<WoWorkOrder> children;

}
